<?php

namespace app\common\logic;

use app\common\model\Bank as ModelBank;
use think\Db;
use think\Exception;

/**
 * 银行卡管理
 */
class BankLogic
{
    /**
     * 获取用户银行列表
     * @param int  $uid
     * @return array
     */
    
    public static function getBankList($uid)
    {
        return ModelBank::where('user_id', $uid)->paginate(10);
    }
    /**
     * 获取用户默认银行卡
     * @param int  $uid
     * @return array
     */
    public static function getDefaultBank($uid)
    {
        return ModelBank::where('is_default', 1)->where('user_id', $uid)->find();
    }



    /**
     * 设置用户默认银行卡
     * @param int  $id
     * @param int  $uid
     * @return array
     */
    public static function setDefaultBank($id, $uid)
    {
        Db::startTrans();
        try {
            ModelBank::where('user_id', $uid)->update(['is_default' => 0]);
            ModelBank::where('user_id', $uid)->where('id', $id)->update(['is_default' => 1]);
            Db::commit();
        } catch (Exception | \Throwable $e) {
            Db::rollback();
            exception($e->getMessage());
        }
        return true;
    }



    /**
     * 获取用户银行卡详情
     * @param int  $id
     * @return array
     */
    public static function getBankInfo($id)
    {
        return ModelBank::get($id);
    }
    /**
     * 用户添加编辑银行卡
     * @param array  $data
     * @return array
     */
    public static function addEditBank($data)
    {
        extract($data);
        Db::startTrans();
        try {

            if ($is_default == 1) {
                ModelBank::where('user_id', $user_id)->update(['is_default' => 0]);
            }
            $bank = ModelBank::get($id);
            if ($bank) {
                $bank->isUpdate(true)->save($data);
            } else {
                ModelBank::create($data, true);
            }
            Db::commit();
        } catch (\Exception $e) {
            Db::rollback();
            return $e->getMessage();
        }
        return true;
    }

    /**
     * 删除银行卡
     * @param int  $id
     * @return array
     */
    public static function delAddress($id)
    {
        return ModelBank::where('id', $id)->delete();
    }
}
